OBJECT Report 50004 Export Items by IPG to Excel
{
  OBJECT-PROPERTIES
  {
    Date=18/06/15;
    Time=07:29:02;
    Modified=Yes;
    Version List=NAVW17.10.00,ADC01;
  }
  PROPERTIES
  {
    CaptionML=[ENU=Export Items by IPG to Excel;
               ENG=Export Items by IPG to Excel];
    ProcessingOnly=Yes;
    OnPreReport=BEGIN
                  RowNo := 0;
                  SheetName := '';
                  TempExcelBuffer.DELETEALL;
                END;

    OnPostReport=BEGIN
                   IF SheetName <> '' THEN BEGIN
                     TempExcelBuffer.CreateBook(SheetName);
                     TempExcelBuffer.WriteSheet(SheetName,COMPANYNAME,USERID);
                     TempExcelBuffer.CloseBook;
                     TempExcelBuffer.OpenExcel;
                     TempExcelBuffer.GiveUserControl;
                   END;
                 END;

  }
  DATASET
  {
    { 9057229; ;DataItem;IPG                 ;
               DataItemTable=Table94;
               DataItemTableView=SORTING(Code) }

    { 1   ;1   ;DataItem;                    ;
               DataItemTable=Table27;
               DataItemTableView=SORTING(Inventory Posting Group);
               OnPreDataItem=BEGIN
                               IF COUNT = 0 THEN
                                 CurrReport.SKIP;

                               Window.OPEN(
                                 Text000 +
                                 '@1@@@@@@@@@@@@@@@@@@@@@\');
                               Window.UPDATE(1,0);
                               TotalRecNo := COUNT;
                               RecNo := 0;

                               AddSheet(IPG.Code);
                             END;

               OnAfterGetRecord=BEGIN
                                  RecNo := RecNo + 1;
                                  Window.UPDATE(1,ROUND(RecNo / TotalRecNo * 10000,1));
                                  AddLine;
                                END;

               OnPostDataItem=BEGIN
                                Window.CLOSE;
                              END;

               ReqFilterFields=Location Filter,Date Filter;
               DataItemLink=Inventory Posting Group=FIELD(Code) }

  }
  REQUESTPAGE
  {
    PROPERTIES
    {
    }
    CONTROLS
    {
      { 1000000001;;Container;
                  Name=ContentArea;
                  ContainerType=ContentArea }

    }
  }
  LABELS
  {
  }
  CODE
  {
    VAR
      Text000@1000 : TextConst 'ENU=Analyzing Data...\\;ENG=Analysing Data...\\';
      Text001@1001 : TextConst 'ENU=Filters;ENG=Filters';
      TempExcelBuffer@1006 : TEMPORARY Record 370;
      Window@9057229 : Dialog;
      ServerFileName@1008 : Text;
      SheetName@1011 : Text[250];
      RecNo@9057230 : Integer;
      TotalRecNo@9057231 : Integer;
      RowNo@1000000021 : Integer;

    LOCAL PROCEDURE AddHeader@1000000000();
    BEGIN
      //Sheet One Filter Fields or Header
      RowNo := 0;
      IF IPG.GETFILTER(Code) <> '' THEN BEGIN
        RowNo := RowNo + 1;
        EnterFilterInCell(RowNo,
          IPG.GETFILTER(Code),
          Item.FIELDCAPTION("Inventory Posting Group"),
          '',
          TempExcelBuffer."Cell Type"::Text
        );
      END;

      IF Item.GETFILTER("Location Filter") <> '' THEN BEGIN
        RowNo := RowNo + 1;
        EnterFilterInCell(RowNo,
          Item.GETFILTER("Location Filter"),
          Item.FIELDCAPTION("Location Filter"),
          '',
          TempExcelBuffer."Cell Type"::Text
        );
      END;

      IF Item.GETFILTER("Date Filter") <> '' THEN BEGIN
        RowNo := RowNo + 1;
        EnterFilterInCell(RowNo,
          Item.GETFILTER("Date Filter"),
          Item.FIELDCAPTION("Date Filter"),
          '',
          TempExcelBuffer."Cell Type"::Text
        );
      END;

      IF RowNo > 0 THEN
        RowNo := RowNo + 1;
    END;

    LOCAL PROCEDURE AddColumnHeaders@1000000001();
    VAR
      TempStr@1000000000 : Text[250];
    BEGIN
      RowNo := RowNo + 1;
      WITH Item DO BEGIN
        EnterCell(RowNo,1,FIELDCAPTION("No."),FALSE,FALSE,TRUE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,2,FIELDCAPTION(Description),FALSE,FALSE,TRUE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,3,FIELDCAPTION(Blocked),FALSE,FALSE,TRUE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,4,FIELDCAPTION("Purchases (Qty.)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,5,FIELDCAPTION("Purchases (LCY)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,6,FIELDCAPTION("Positive Adjmt. (Qty.)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,7,FIELDCAPTION("Positive Adjmt. (LCY)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,8,FIELDCAPTION("Negative Adjmt. (Qty.)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,9,FIELDCAPTION("Negative Adjmt. (LCY)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,10,FIELDCAPTION("Sales (Qty.)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,11,FIELDCAPTION("Sales (LCY)"),FALSE,FALSE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
      END;
    END;

    LOCAL PROCEDURE AddLine@1000000002();
    BEGIN
      RowNo := RowNo + 1;

      WITH Item DO BEGIN
        CALCFIELDS("Purchases (Qty.)","Purchases (LCY)","Positive Adjmt. (Qty.)","Positive Adjmt. (LCY)");
        CALCFIELDS("Negative Adjmt. (Qty.)","Negative Adjmt. (LCY)","Sales (Qty.)","Sales (LCY)","Net Change");
        EnterCell(RowNo,1,"No.",FALSE,FALSE,FALSE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,2,Description,FALSE,FALSE,FALSE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,3,FORMAT(Blocked),FALSE,FALSE,FALSE,'@',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,4,FORMAT("Purchases (Qty.)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,5,FORMAT("Purchases (LCY)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,6,FORMAT("Positive Adjmt. (Qty.)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,7,FORMAT("Positive Adjmt. (LCY)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,8,FORMAT("Negative Adjmt. (Qty.)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,9,FORMAT(-"Negative Adjmt. (LCY)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,10,FORMAT("Sales (Qty.)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,11,FORMAT("Sales (LCY)"),FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
      END;
    END;

    PROCEDURE AddSheet@9057234(NewSheetName@9057229 : Text[250]);
    BEGIN
      //Add the Newsheet to the Excel Buffer
      EnterCell(RowNo + 1,0,NewSheetName,FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);

      //First Worksheet Only
      IF RowNo = 0 THEN BEGIN
        SheetName := TempExcelBuffer.ValidateSheetName(NewSheetName);
        AddHeader;
      END;

      AddColumnHeaders;
    END;

    LOCAL PROCEDURE EnterFilterInCell@5(RowNo@1000 : Integer;Filter@1001 : Text[250];FieldName@1002 : Text[100];Format@1003 : Text[30];CellType@1004 : Option);
    BEGIN
      IF Filter <> '' THEN BEGIN
        EnterCell(RowNo,1,FieldName,FALSE,FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,2,Filter,FALSE,FALSE,FALSE,Format,CellType);
      END;
    END;

    LOCAL PROCEDURE EnterCell@2(RowNo@1000 : Integer;ColumnNo@1001 : Integer;CellValue@1002 : Text[250];Bold@1003 : Boolean;Italic@1004 : Boolean;UnderLine@1005 : Boolean;Format@1006 : Text[30];CellType@1007 : Option);
    BEGIN
      TempExcelBuffer.INIT;
      TempExcelBuffer.VALIDATE("Row No.",RowNo);
      TempExcelBuffer.VALIDATE("Column No.",ColumnNo);
      TempExcelBuffer."Cell Value as Text" := CellValue;
      TempExcelBuffer.Formula := '';
      TempExcelBuffer.Bold := Bold;
      TempExcelBuffer.Italic := Italic;
      TempExcelBuffer.Underline := UnderLine;
      TempExcelBuffer.NumberFormat := Format;
      TempExcelBuffer."Cell Type" := CellType;
      TempExcelBuffer.INSERT;
    END;

    BEGIN
    END.
  }
  RDLDATA
  {
  }
}

